
#登录处理
import re

from flask import current_app,session
from flask import request, jsonify

from ihome.api_1_0 import api
from ihome.models import User
from ihome.utils.response_code import RET


@api.route('/sessions',methods=['POST'])
def sessions():


    #获取参数
    data_dict = request.json
    mobile = data_dict.get('mobile')
    password = data_dict.get('password')

    #校验
    if not all([mobile, password]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数错误')

    if not re.match(r'^1[3578]\d{9}$', mobile):
        return jsonify(errno=RET.DATAERR, errmsg='手机号不符')

    #获取用户
    try:
        user = User.query.filter(User.mobile == mobile).first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='数据库查询错误')

    if not user:
        return jsonify(errno=RET.USERERR, errmsg='用户不存在')

    if not user.check_password(password):
        return jsonify(errno=RET.PWDERR, errmsg='密码不正确')


    #设置cookie

    session['name'] = user.name
    session['user_id'] = user.id



    return jsonify(errno=RET.OK, errmsg='登录成功')


@api.route('/session',methods=['GET','DELETE'])
def get_del_session():
    # 处理get请求
    # get请求是处理获取用户登录状态的
    if request.method == 'GET':
        user_id = session.get('user_id')
        name = session.get('name')
        if not all([user_id, name]):
            return jsonify(errno=RET.SESSIONERR, errmsg='用户未登录')


        data = {
            'user_id': user_id,
            'name': name,

        }
        return jsonify(errno=RET.OK, errmsg='操作成功', data=data)

        # 处理退出登录的请求

    session.pop('name')
    session.pop('user_id')

    return jsonify(errno=RET.OK, errmsg='退出登录成功')


